home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac: Not for Sale / Another.not.for.sale (Australia).iso / fade into you / getting there / Apps / MOO-1.7.6.src / inc / config.h < prev    next >
Text File  |  1994-11-02  |  11KB  |  258 lines

  1.  
  2. /******************************************************************************
  3.   Copyright (c) 1992 Xerox Corporation.  All rights reserved.
  4.   Portions of this code were written by Stephen White, aka ghond.
  5.   Use and copying of this software and preparation of derivative works based
  6.   upon this software are permitted.  Any distribution of this software or
  7.   derivative works must comply with all applicable United States export
  8.   control laws.  This software is made available AS IS, and Xerox Corporation
  9.   makes no warranty about the software, its performance or its conformity to
  10.   any specification.  Any person obtaining a copy of this software is requested
  11.   to send their name and post office or electronic mail address to:
  12.     Pavel Curtis
  13.     Xerox PARC
  14.     3333 Coyote Hill Rd.
  15.     Palo Alto, CA 94304
  16.     Pavel@Xerox.Com
  17.  *****************************************************************************/
  18.  
  19. /* If you're looking at this as `raw_config.h.in', then this file is full of
  20.  * `#undef' preprocessor directives.  The `configure' command, which generates
  21.  * `raw_config.h' from `raw_config.h.in', replaces appropriate ones of those
  22.  * `#undef's with `#define's, depending upon characteristics of the operating
  23.  * system.  The Makefile then constructs `config.h' from `raw_config.h' by
  24.  * stripping out all of the remaining `#undef' lines.
  25.  */
  26.  
  27. #ifndef Config_H
  28. #define Config_H 1
  29.  
  30. /* Some systems require that certain preprocessor symbols be defined in order
  31.  * for certain pieces of the C library to be available.  If one of the
  32.  * following is defined, then your system is one such.
  33.  */
  34.  
  35. #define _ALL_SOURCE
  36.  
  37. /* The following symbols describe whether or not certain functions are declared
  38.  * in header files on your system and, if so, where.  If, on your system, the
  39.  * functions `memcmp', `memcpy', etc. are not declared in <string.h>, but are
  40.  * instead in <memory.h>, then NEED_MEMORY_H will be defined.  Similarly, if
  41.  * `malloc', `free', etc. are not declared in <stdlib.h>, but are instead in
  42.  * <malloc.h>, then NEED_MALLOC_H will be defined.  If your system has the file
  43.  * </sys/bsdtypes.h>, then NEED_BSDTYPES_H will be defined.
  44.  *
  45.  * The various NDECL_* symbols are defined if the named function is not
  46.  * declared in its standard place, which is given in a comment after each
  47.  * symbol.  In several of the cases below, the absence of a declaration for the
  48.  * named function is taken in the server code to imply the similar absence of
  49.  * declarations for several other related functions.
  50.  */
  51.  
  52. #define NEED_MEMORY_H 0
  53. #define NEED_MALLOC_H 0
  54. #define NEED_BSDTYPES_H 0
  55. #define NEED_SELECT_H 0
  56.  
  57. #define NDECL_FCNTL 0        /* <fcntl.h>      */
  58. #define NDECL_HTONL 1    /* <netinet/in.h> */
  59. #define NDECL_IOCTL 1        /* <sys/ioctl.h>  */
  60. #define NDECL_POLL 1        /* <poll.h>      */
  61. #define NDECL_KILL 1        /* <signal.h>      */
  62. #define NDECL_SIGEMPTYSET 1    /* <signal.h>      */
  63. #define NDECL_SIGPROCMASK 1    /* <signal.h>      */
  64. #define NDECL_SIGRELSE 1        /* <signal.h>      */
  65. #define NDECL_ACCEPT 1        /* <sys/socket.h> */
  66. #define NDECL_BIND 1        /* <sys/socket.h> */
  67. #define NDECL_SHUTDOWN 1        /* <sys/socket.h> */
  68. #define NDECL_FSTAT 1        /* <sys/stat.h>      */
  69. #define NDECL_FCLOSE 0        /* <stdio.h>      */
  70. #define NDECL_PERROR 0        /* <stdio.h>      */
  71. #define NDECL_REMOVE 0        /* <stdio.h>      */
  72. #define NDECL_VFPRINTF 1        /* <stdio.h>      */
  73. #define NDECL_RANDOM 1        /* <stdlib.h>      */
  74. #define NDECL_SRANDOM 0        /* <stdlib.h>      */
  75. #define NDECL_STRTOL 1        /* <stdlib.h>      */
  76. #define NDECL_BZERO    1    /* <string.h>      */
  77. #define NDECL_MEMCPY 0        /* <string.h>      */
  78. #define NDECL_MEMSET 0        /* <string.h>      */
  79. #define NDECL_STRERROR 0        /* <string.h>      */
  80. #define NDECL_GETITIMER 1        /* <sys/time.h>      */
  81. #define NDECL_SETITIMER 1        /* <sys/time.h>      */
  82. #define NDECL_SELECT 1        /* <sys/time.h>      */
  83. #define NDECL_STRFTIME 1        /* <time.h>      */
  84. #define NDECL_TIME 0        /* <time.h>      */
  85. #define NDECL_TZNAME 1        /* <time.h>      */
  86. #define NDECL_T_OPEN 1        /* <tiuser.h>      */
  87. #define NDECL_FORK 0        /* <unistd.h>      */
  88. #define NDECL_WAITPID 1        /* <sys/wait.h>      */
  89.  
  90. /* Some systems declare bzero() in <stdlib.h> instead of in <string.h>. */
  91.  
  92. #define BZERO_IN_STDLIB_H 0
  93.  
  94. /* Some header files are only present on certain kinds of UNIXes (e.g., BSD,
  95.  * System V, or POSIX).  The following symbols are defined only if the named
  96.  * header file exists on your system.
  97.  */
  98.  
  99. #define HAVE_STDLIB_H 1
  100. #define HAVE_UNISTD_H 0
  101.  
  102. /* Some POSIX-standard typedefs are not present in some systems.  The following
  103.  * symbols are defined as aliases for their usual definitions if they are not
  104.  * defined on your system.
  105.  */
  106.  
  107. #define pid_t long
  108. #define mode_t long
  109.  
  110. /* To implement the LambdaMOO built-in function `ctime()', which converts a
  111.  * number of seconds since the POSIX `epoch' into a human-readable time/date
  112.  * string, the server code needs to be able to find out the name of the local
  113.  * time zone.  This information is available in an obscure way from the ANSI
  114.  * standard function `strftime()', but many systems still don't implement it.
  115.  * The server has code to cope with this case, though, if your system maintains
  116.  * the time-zone name in one of two common places.  Appropriate ones of the
  117.  * following symbols will be defined to tell the server how to get time-zone
  118.  * information on your system.
  119.  */
  120.  
  121. #define HAVE_STRFTIME 1
  122. #define TM_IN_SYS_TIME 0
  123. #define HAVE_TM_ZONE 0
  124. #define HAVE_TZNAME 0
  125.  
  126. /* Some compilers `almost' conform to the ANSI C standard, in that they provide
  127.  * the vast majority of the features and constructs used by the server code,
  128.  * but one common failing with which the code can cope is the lack of support
  129.  * for the `const' keyword.  If your compiler doesn't support `const', then
  130.  * this symbol will be defined as a macro that expands into nothing, thus
  131.  * eliding all uses of the keyword in the code.
  132.  */
  133.  
  134. /* Some sites have installed GCC improperly or incompletely, thereby requiring
  135.  * the server to be compiled with the `-traditional' switch.  That disables the
  136.  * `const', `volatile' or `signed' keywords, which we need.  Thus, for GCC, we
  137.  * do these little substitutions to always refer to its `hidden' names for
  138.  * these keywords.
  139.  */
  140.  
  141. #ifdef __GNUC__
  142. #  define const __const__
  143. #  define volatile __volatile__
  144. #  define signed __signed__
  145. #endif
  146.  
  147. /* Certain functions used by the server are `optional', in the sense that the
  148.  * server can provide its own definition if necessary.  In some cases, there
  149.  * are a number of common ways to do the same thing, differing by system type
  150.  * (e.g., BSD, System V, or POSIX).  The following symbols are defined if your
  151.  * system provides the named functions.
  152.  */
  153.  
  154. #define HAVE_MKFIFO 0
  155. #define HAVE_REMOVE 1
  156. #define HAVE_RENAME 1
  157. #define HAVE_SELECT 0
  158. #define HAVE_POLL 0
  159. #define HAVE_STRERROR 1
  160. #define HAVE_STRTOUL 0
  161. #define HAVE_RANDOM 0
  162. #define HAVE_LRAND 48
  163. #define HAVE_WAITPID 0
  164. #define HAVE_WAIT 2
  165. #define HAVE_SIGEMPTYSET 0
  166. #define HAVE_SIGPROCMASK 0
  167. #define HAVE_SIGSETMASK 0
  168. #define HAVE_SIGRELSE 0
  169.  
  170. /* It used to be very much the fashion in UNIX programming to make use of
  171.  * certain standard header files depend on the programmer having #include'd
  172.  * other standard header files first.  This is obviously losing and, amazingly,
  173.  * is also losing favor, replaced by the notion that every header file should
  174.  * #include whatever other headers it requires, and that all headers should
  175.  * take steps to ensure that they are not #include'd more than once if that
  176.  * would be bad.  The following symbols are defined if the named header files
  177.  * fail to adhere to the new style; the server code makes up for them by doing
  178.  * its own #include of the usual prerequisite.
  179.  */
  180.  
  181. #define ARPA_INET_H_NEEDS_HELP 0
  182. #define SIGNAL_H_NEEDS_HELP 0
  183. #define SYS_SOCKET_H_NEEDS_HELP 0
  184. #define TIME_H_NEEDS_HELP 0
  185.  
  186. /* Version 2 of the GNU C compiler includes `built-in' declarations for a
  187.  * number of standard functions from the ANSI header file <string.h>.
  188.  * Unfortunately, some systems declare these functions differently (and
  189.  * non-standardly) in their native header files, generating a warning about the
  190.  * conflict from GCC.  If this is the case on your system, the following symbol
  191.  * will be defined, indicating that the server code should avoid your system's
  192.  * <string.h> file, using its own version instead.
  193.  */
  194.  
  195. #define USE_OWN_STRING_H 0
  196.  
  197. /* On some systems, notably AIX, both <sys/ioctl.h> and <stropts.h> define the
  198.  * internal macro `_IO' in compatible but different ways.  This means that no
  199.  * program can #include both files without getting an error.  If this is so on
  200.  * your machine, then the following symbol will be defined and the server code
  201.  * will carefully #undef _IO between inclusions of the two files.
  202.  */
  203.  
  204. #define UNDEF_IO_IN_STROPTS_H 0
  205.  
  206. /* The NS_SYSV/NP_LOCAL networking configuration of the server makes use of an
  207.  * operating system feature called `FIFO's for communication with clients of
  208.  * the MOO.  In order to do this, the server needs some way to tell whether or
  209.  * not there's something ready to be read on a given FIFO at any given time.
  210.  * The BSD function `select()' usually works if it's available, but the System
  211.  * V equivalent, `poll()', sometimes does and sometimes doesn't, depending on
  212.  * the system.  The POSIX definers, of course, took the coward's way out and
  213.  * didn't define any such function at all.  On many systems, however, you can
  214.  * use the `fstat()' function to determine the number of bytes of data in a
  215.  * FIFO; this allows the use of a somewhat crocky but workable substitute for
  216.  * either `poll()' or `select()'.  The following symbols are defined if the
  217.  * given function works to perform the necessary operation on FIFOs on your
  218.  * system.
  219.  */
  220.  
  221. #define FSTAT_WORKS_ON_FIFOS 0
  222. #define POLL_WORKS_ON_FIFOS 0
  223. #define SELECT_WORKS_ON_FIFOS 0
  224.  
  225. /* The POSIX standard specifies a nice, simple, reliable method for performing
  226.  * non-blocking I/O, and a lot of systems actually implement it.  Some systems,
  227.  * though (notably Ultrix 4.1), misleadingly define the preprocessor symbols
  228.  * that might make you *think* that they've implemented it, but really they
  229.  * don't.  This symbol is defined if POSIX-style non-blocking actually works on
  230.  * your system.
  231.  */
  232.  
  233. #define POSIX_NONBLOCKING_WORKS 0
  234.  
  235. #endif /* !Config_H */
  236.  
  237. /* $Log: config.h.in,v $
  238.  * Revision 1.5  1992/10/28  01:57:38  pavel
  239.  * Changed NDECL_VPRINTF to NDECL_VFPRINTF, which is the one we care about...
  240.  *
  241.  * Revision 1.4  1992/10/23  23:11:21  pavel
  242.  * Added copyright notice.
  243.  *
  244.  * Revision 1.3  1992/10/23  19:19:22  pavel
  245.  * Added NEED_MALLOC_H, NDECL_{SIGEMPTYSET,FSTAT,PERROR,REMOVE,VPRINTF,MEMSET,
  246.  * FORK,WAITPID}, SELECT_WORKS_ON_FIFOS, and POSIX_NONBLOCKING_WORKS.
  247.  *
  248.  * Revision 1.2  1992/10/21  03:12:59  pavel
  249.  * Fixed up the comment leader string for this file.
  250.  *
  251.  * Revision 1.1  1992/10/21  03:06:52  pavel
  252.  * Initial RCS-controlled version.
  253.  */
  254.  
  255. /* Local Variables: */
  256. /* mode: c */
  257. /* End: */
  258.